#include "cryptstring.h"
#include <QDateTime>
//CryptString.cpp实现文件

CryptString::CryptString(const QString &data):
    _data(data)
{

}

QString CryptString::generateMD5() const
{
    QByteArray arr = QCryptographicHash::hash(_data.toUtf8(), QCryptographicHash::Md5);
    return arr.toHex();
}

////////////////////////KVQuery////////////////////////////


KVQuery::KVQuery(const QString &secret)
{
    _map.insert("secret",secret);
   // _map.insert("t", QString::number(QDateTime::currentMSecsSinceEpoch()));
   _map.insert("t","1757988004132");
}

void KVQuery::add(const QString &key, const QString &value)
{
    _map.insert(key, value);
}

void KVQuery::erase(const QString &key)
{
    _map.remove(key);
}

void KVQuery::clear()
{
    _map.clear();
}

QString KVQuery::toString() const
{   //转换为url中查询参数的格式
    QString tmp;
    for (auto it = _map.begin(); it != _map.end(); ++it) {
        tmp.append(it.key()).append("=").append(it.value()).append("&");
    }
    tmp.chop(1);
    return tmp;
}

QString KVQuery::getQueryParameter()
{
    CryptString cryptStr(toString());
    QString token = cryptStr.generateMD5();
    erase("secret");//去掉secret
    QString res = toString();
    res.append("&token=").append(token);
    return res;
}
